package com.cskaoyan.market.util;

import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
    *@Author：檀志浩
    *@Package：com.cskaoyan.market.util
    *@Project：Project1
    *@name：HttpUtil
    *@Date：2023/5/10  10:00
    *@Filename：HttpUtil
    */
public class HttpUtil {
    /**
     * 需要特别注意的是，仅当请求体里面是字符数据时，才可以使用该方法
     * @param request
     * @return
     * @throws IOException
     */
    public static String parseRequestBody(HttpServletRequest request) throws IOException {
        ServletInputStream inputStream = request.getInputStream();
        //ByteArrayOutputStream和FileOutputStream的区别就是一个写出到数组，一个写出到文件，除此之外，操作上完全一模一样
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        int length = 0;
        byte[] bytes = new byte[1024];
        while ((length = inputStream.read(bytes)) != -1){
            byteArrayOutputStream.write(bytes, 0, length);
        }
        //数组里面的数据转换成字符串
        // {"username":"admin123","password":"admin123"}
        //处理起来有两种方式
        //方式一：1.定义一个对象，将json字符串转换成对象，但是这种处理方式会占用一个对象
        String requestBody = byteArrayOutputStream.toString("utf-8");
        byteArrayOutputStream.close();
        inputStream.close();
        return requestBody;
    }
}
